package com.atguigu.e_generic;

import java.util.ArrayList;

/*
    Object > Number > Integer -> 可以有多态
    动物 > 猪 -> 可以有多态  所以 : 动物引用 接收 猪对象 [Animal animal = new Pig();]

    动物园[容器对象<Animal>] > 猪圈[容器对象<Pig>]
        动物园引用 接受 猪圈对象

        <?> : 泛型的通配符
            如果方法形参定义的容器泛型写的是通配符,那么此方法的实参可以是任意泛型类的此容器对象

        泛型的上下限问题 :
            //带入的形式分辨上下限 : 把自己带入成 ?
            泛型的下限 : <? super 类型>
            泛型的上限 : <? extends 类型>

            如果真的分不清 : 把上下限删了再看方法 -> 因为不管上限还是下限都包含extends/super后方的类型

 */
public class Demo {
    public static void main(String[] args) {
        ArrayList<Object> list1 = new ArrayList<>();
        ArrayList<Number> list2 = new ArrayList<>();
        ArrayList<Integer> list3 = new ArrayList<>();

        //show(list1);
        show(list2);
        show(list3);
    }

    public static void show(ArrayList<? extends Number> list){

    }
}
